package admin_article_api

import (
	"blog_go/global"
	"blog_go/models"
	"blog_go/models/res"
	"github.com/gin-gonic/gin"
	"github.com/sirupsen/logrus"
	"gorm.io/gorm"
)

// ArticleDel 文章删除
// @Tags 文章管理
// @Summary 文章删除
// @Description 文章删除
// @Param params body models.DeleteRequest true "入参json"
// @Param token header string true "token"
// @Router /api/admin/article/del [delete]
// @Produce json
// @Success 200 {object} res.Response{data=bool}
func (AdminArticleApi) ArticleDel(c *gin.Context) {
	var delReq models.DeleteRequest
	if err := c.ShouldBindJSON(&delReq); err != nil {
		logrus.Error(err)
		panic(err)
	}
	err := global.DB.Transaction(func(tx *gorm.DB) error {
		// 删除文章收藏中间表
		if err := tx.Where("article_id in ?", delReq.IdList).Delete(&models.User2CollModel{}).Error; err != nil {
			if err != nil {
				return err
			}
		}
		// 删除文章标签中间表
		if err := tx.Where("article_id in ?", delReq.IdList).Delete(&models.Article2TagModel{}).Error; err != nil {
			if err != nil {
				return err
			}
		}
		// 删除文章
		if err := tx.Delete(&models.ArticleModel{}, delReq.IdList).Error; err != nil {
			if err != nil {
				return err
			}
		}
		return nil
	})
	if err != nil {
		logrus.Error(err)
		panic(err)
	}
	res.Ok("删除成功", true, c)
}
